"""
功能：自动生成PDF格式诊断报告
技术：Jinja2模板引擎
比喻：AI医生书写电子病历
"""
from datetime import date, timedelta, time, datetime
from jinja2 import Environment, FileSystemLoader
import numpy as np
from matplotlib import pyplot as plt


def create_report(damage_prob, conclusion, template_dir='templates'):
    """
    参数说明：
    damage_prob : 各部位损伤概率 -> 病情严重度
    conclusion  : 诊断结论文本 -> 医嘱建议
    template_dir: 模板目录 -> 病历本格式
    """
    """
    生成结构健康诊断报告，就像医生写病历
    :param damage_prob: 各部位的损伤概率
    :return: 图文并茂的诊断书
    """

    print("🏥 结构健康诊断报告 🩺")
    print(f"检查时间：{datetime.now().strftime('%Y-%m-%d %H:%M')}")

    # 损伤程度评级
    max_prob = np.max(damage_prob)
    diagnosis = {
        max_prob < 0.3: "亚健康状态，建议定期复查",
        0.3 <= max_prob < 0.6: "局部异常，立即开展详细检查",
        max_prob >= 0.6: "重大损伤警报！紧急处置！"
    }[True]

    # 可视化报告
    fig, ax = plt.subplots(figsize=(10, 6))
    ax.barh(range(len(damage_prob)), damage_prob,
            color=['green' if p < 0.3 else 'orange' if p < 0.6 else 'red' for p in damage_prob])
    ax.set_title("各部位损伤风险指数")
    plt.savefig("diagnosis_report.png")

    env = Environment(loader=FileSystemLoader(template_dir))
    template = env.get_template('diagnosis.html')

    # 渲染报告内容（填写病历）
    html = template.render(
        damage_map=damage_prob,
        conclusion=conclusion,
        date=datetime.now().strftime('%Y-%m-%d')
    )

    # 保存为PDF（打印病历）
    with open('diagnosis_report.html', 'w') as f:
        f.write(html)

    return fig, diagnosis
